[INFO] cloning repository https://github.com/zhuqingyv/mlink
[INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/zhuqingyv/mlink" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fzhuqingyv%2Fmlink", kill_on_drop: false }`
[INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fzhuqingyv%2Fmlink'...
[INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }`
[INFO] [stdout] a42f7d85152783e2d71bb1d5190863cfc9df3cbd
[INFO] testing zhuqingyv/mlink against master#cced03bfd61a304243a34504618ecec86c17063f for pr-154065-2
[INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fzhuqingyv%2Fmlink" "/workspace/builds/worker-4-tc1/source", kill_on_drop: false }`
[INFO] [stderr] Cloning into '/workspace/builds/worker-4-tc1/source'...
[INFO] [stderr] done.
[INFO] removed /workspace/builds/worker-4-tc1/source/.cargo/config.toml
[INFO] started tweaking git repo https://github.com/zhuqingyv/mlink
[INFO] finished tweaking git repo https://github.com/zhuqingyv/mlink
[INFO] tweaked toml for git repo https://github.com/zhuqingyv/mlink written to /workspace/builds/worker-4-tc1/source/Cargo.toml
[INFO] validating manifest of git repo https://github.com/zhuqingyv/mlink on toolchain cced03bfd61a304243a34504618ecec86c17063f
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+cced03bfd61a304243a34504618ecec86c17063f" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }`
[INFO] crate git repo https://github.com/zhuqingyv/mlink already has a lockfile, it will not be regenerated
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+cced03bfd61a304243a34504618ecec86c17063f" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] [stderr]     Updating crates.io index
[INFO] [stderr]  Downloading crates ...
[INFO] [stderr]   Downloaded tokio-tungstenite v0.23.1
[INFO] [stderr]   Downloaded tungstenite v0.23.0
[INFO] [stderr]   Downloaded socket-pktinfo v0.3.2
[INFO] [stderr]   Downloaded if-addrs v0.15.0
[INFO] [stderr]   Downloaded objc2-core-bluetooth v0.2.2
[INFO] [stderr]   Downloaded btleplug v0.11.8
[INFO] [stderr]   Downloaded mdns-sd v0.19.0
[INFO] [stderr]   Downloaded dbus-tokio v0.7.6
[INFO] [stderr]   Downloaded jni-utils v0.1.1
[INFO] [stderr]   Downloaded bluez-async v0.8.2
[INFO] [stderr]   Downloaded xml v1.2.1
[INFO] [stderr]   Downloaded bluez-generated v0.4.0
[INFO] [stderr]   Downloaded serde-xml-rs v0.8.2
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-4-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-4-tc1/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:d429b63d4308055ea97f60fb1d3dfca48854a00942f1bd2ad806beaf015945ec" "/opt/rustwide/cargo-home/bin/cargo" "+cced03bfd61a304243a34504618ecec86c17063f" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }`
[INFO] [stdout] cd4e8692b6bbdcd042b938e621e4d0f256a3f42c53614b51062bb384202bc898
[INFO] running `Command { std: "docker" "start" "-a" "cd4e8692b6bbdcd042b938e621e4d0f256a3f42c53614b51062bb384202bc898", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "cd4e8692b6bbdcd042b938e621e4d0f256a3f42c53614b51062bb384202bc898", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "cd4e8692b6bbdcd042b938e621e4d0f256a3f42c53614b51062bb384202bc898", kill_on_drop: false }`
[INFO] [stdout] cd4e8692b6bbdcd042b938e621e4d0f256a3f42c53614b51062bb384202bc898
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-4-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-4-tc1/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=forbid" "-e" "RUSTDOCFLAGS=--cap-lints=forbid" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:d429b63d4308055ea97f60fb1d3dfca48854a00942f1bd2ad806beaf015945ec" "/opt/rustwide/cargo-home/bin/cargo" "+cced03bfd61a304243a34504618ecec86c17063f" "build" "--frozen" "--message-format=json", kill_on_drop: false }`
[INFO] [stdout] d301be63372d760e992e01eea435127529051035c9183b877e101707e361802f
[INFO] running `Command { std: "docker" "start" "-a" "d301be63372d760e992e01eea435127529051035c9183b877e101707e361802f", kill_on_drop: false }`
[INFO] [stderr]    Compiling libc v0.2.185
[INFO] [stderr]    Compiling pkg-config v0.3.33
[INFO] [stderr]    Compiling http v1.4.0
[INFO] [stderr]    Compiling typenum v1.20.0
[INFO] [stderr]    Compiling num-traits v0.2.19
[INFO] [stderr]    Compiling syn v2.0.117
[INFO] [stderr]    Compiling xml v1.2.1
[INFO] [stderr]    Compiling spin v0.9.8
[INFO] [stderr]    Compiling bitflags v2.11.1
[INFO] [stderr]    Compiling serde_json v1.0.149
[INFO] [stderr]    Compiling fastrand v2.4.1
[INFO] [stderr]    Compiling serde_path_to_error v0.1.20
[INFO] [stderr]    Compiling tracing-subscriber v0.3.23
[INFO] [stderr]    Compiling flume v0.11.1
[INFO] [stderr]    Compiling libdbus-sys v0.2.7
[INFO] [stderr]    Compiling generic-array v0.14.7
[INFO] [stderr]    Compiling parking_lot_core v0.9.12
[INFO] [stderr]    Compiling socket2 v0.6.3
[INFO] [stderr]    Compiling mio v1.2.0
[INFO] [stderr]    Compiling errno v0.3.14
[INFO] [stderr]    Compiling jobserver v0.1.34
[INFO] [stderr]    Compiling getrandom v0.2.17
[INFO] [stderr]    Compiling getrandom v0.4.2
[INFO] [stderr]    Compiling if-addrs v0.15.0
[INFO] [stderr]    Compiling dirs-sys v0.4.1
[INFO] [stderr]    Compiling http-body v1.0.1
[INFO] [stderr]    Compiling signal-hook-registry v1.4.8
[INFO] [stderr]    Compiling cc v1.2.60
[INFO] [stderr]    Compiling uuid v1.23.1
[INFO] [stderr]    Compiling http-body-util v0.1.3
[INFO] [stderr]    Compiling rand_core v0.6.4
[INFO] [stderr]    Compiling rmp v0.8.15
[INFO] [stderr]    Compiling parking_lot v0.12.5
[INFO] [stderr]    Compiling dashmap v6.1.0
[INFO] [stderr]    Compiling rand_chacha v0.3.1
[INFO] [stderr]    Compiling socket-pktinfo v0.3.2
[INFO] [stderr]    Compiling dirs v5.0.1
[INFO] [stderr]    Compiling mdns-sd v0.19.0
[INFO] [stderr]    Compiling rand v0.8.6
[INFO] [stderr]    Compiling crypto-common v0.1.7
[INFO] [stderr]    Compiling block-buffer v0.10.4
[INFO] [stderr]    Compiling digest v0.10.7
[INFO] [stderr]    Compiling sha1 v0.10.6
[INFO] [stderr]    Compiling zstd-sys v2.0.16+zstd.1.5.7
[INFO] [stderr]    Compiling ring v0.17.14
[INFO] [stderr]    Compiling futures-macro v0.3.32
[INFO] [stderr]    Compiling tokio-macros v2.7.0
[INFO] [stderr]    Compiling serde_derive v1.0.228
[INFO] [stderr]    Compiling tracing-attributes v0.1.31
[INFO] [stderr]    Compiling thiserror-impl v2.0.18
[INFO] [stderr]    Compiling async-trait v0.1.89
[INFO] [stderr]    Compiling thiserror-impl v1.0.69
[INFO] [stderr]    Compiling clap_derive v4.6.1
[INFO] [stderr]    Compiling tokio v1.52.1
[INFO] [stderr]    Compiling futures-util v0.3.32
[INFO] [stderr]    Compiling thiserror v2.0.18
[INFO] [stderr]    Compiling tracing v0.1.44
[INFO] [stderr]    Compiling thiserror v1.0.69
[INFO] [stderr]    Compiling zstd-safe v7.2.4
[INFO] [stderr]    Compiling tungstenite v0.24.0
[INFO] [stderr]    Compiling zstd v0.13.3
[INFO] [stderr]    Compiling clap v4.6.1
[INFO] [stderr]    Compiling serde v1.0.228
[INFO] [stderr]    Compiling serde-xml-rs v0.8.2
[INFO] [stderr]    Compiling rmp-serde v1.3.1
[INFO] [stderr]    Compiling serde_urlencoded v0.7.1
[INFO] [stderr]    Compiling dbus v0.9.10
[INFO] [stderr]    Compiling futures-executor v0.3.32
[INFO] [stderr]    Compiling axum-core v0.4.5
[INFO] [stderr]    Compiling futures v0.3.32
[INFO] [stderr]    Compiling tokio-util v0.7.18
[INFO] [stderr]    Compiling hyper v1.9.0
[INFO] [stderr]    Compiling tokio-tungstenite v0.24.0
[INFO] [stderr]    Compiling tower v0.5.3
[INFO] [stderr]    Compiling dbus-tokio v0.7.6
[INFO] [stderr]    Compiling bluez-generated v0.4.0
[INFO] [stderr]    Compiling tokio-stream v0.1.18
[INFO] [stderr]    Compiling bluez-async v0.8.2
[INFO] [stderr]    Compiling hyper-util v0.1.20
[INFO] [stderr]    Compiling axum v0.7.9
[INFO] [stderr]    Compiling btleplug v0.11.8
[INFO] [stderr]    Compiling mlink-core v0.1.0 (/opt/rustwide/workdir/crates/mlink-core)
[INFO] [stdout] warning: associated items `flush_unacked_over`, `score`, and `should_switchback` are never used
[INFO] [stdout]    --> crates/mlink-core/src/core/session/io.rs:78:25
[INFO] [stdout]     |
[INFO] [stdout]  18 | impl Session {
[INFO] [stdout]     | ------------ associated items in this implementation
[INFO] [stdout] ...
[INFO] [stdout]  78 |     pub(crate) async fn flush_unacked_over(&self, link_id: &str) -> Result<()> {
[INFO] [stdout]     |                         ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 116 |     pub(crate) fn score(status: &LinkStatus) -> i64 {
[INFO] [stdout]     |                   ^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 146 |     pub(crate) async fn should_switchback(&self, current: &str, best: &str) -> bool {
[INFO] [stdout]     |                         ^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]    Compiling mlink-daemon v0.1.0 (/opt/rustwide/workdir/crates/mlink-daemon)
[INFO] [stderr]    Compiling mlink-cli v0.1.0 (/opt/rustwide/workdir/crates/mlink-cli)
[INFO] [stderr]     Finished `dev` profile [unoptimized + debuginfo] target(s) in 1m 05s
[INFO] running `Command { std: "docker" "inspect" "d301be63372d760e992e01eea435127529051035c9183b877e101707e361802f", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "d301be63372d760e992e01eea435127529051035c9183b877e101707e361802f", kill_on_drop: false }`
[INFO] [stdout] d301be63372d760e992e01eea435127529051035c9183b877e101707e361802f
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-4-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-4-tc1/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=forbid" "-e" "RUSTDOCFLAGS=--cap-lints=forbid" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:d429b63d4308055ea97f60fb1d3dfca48854a00942f1bd2ad806beaf015945ec" "/opt/rustwide/cargo-home/bin/cargo" "+cced03bfd61a304243a34504618ecec86c17063f" "test" "--frozen" "--no-run" "--message-format=json", kill_on_drop: false }`
[INFO] [stdout] 5375979bae0abcc69af3cc96e36880bff8c5b2dfa299961a2780ef4eee48804d
[INFO] running `Command { std: "docker" "start" "-a" "5375979bae0abcc69af3cc96e36880bff8c5b2dfa299961a2780ef4eee48804d", kill_on_drop: false }`
[INFO] [stderr]    Compiling bitflags v2.11.1
[INFO] [stderr]    Compiling futures-util v0.3.32
[INFO] [stderr]    Compiling tokio v1.52.1
[INFO] [stderr]    Compiling tungstenite v0.23.0
[INFO] [stderr]    Compiling rustix v1.1.4
[INFO] [stderr]    Compiling tempfile v3.27.0
[INFO] [stderr]    Compiling dbus v0.9.10
[INFO] [stderr]    Compiling futures-executor v0.3.32
[INFO] [stderr]    Compiling axum-core v0.4.5
[INFO] [stderr]    Compiling futures v0.3.32
[INFO] [stderr]    Compiling tokio-util v0.7.18
[INFO] [stderr]    Compiling hyper v1.9.0
[INFO] [stderr]    Compiling tower v0.5.3
[INFO] [stderr]    Compiling tokio-tungstenite v0.24.0
[INFO] [stderr]    Compiling tokio-tungstenite v0.23.1
[INFO] [stderr]    Compiling tokio-stream v0.1.18
[INFO] [stderr]    Compiling hyper-util v0.1.20
[INFO] [stderr]    Compiling tokio-test v0.4.5
[INFO] [stderr]    Compiling axum v0.7.9
[INFO] [stderr]    Compiling bluez-generated v0.4.0
[INFO] [stderr]    Compiling dbus-tokio v0.7.6
[INFO] [stderr]    Compiling bluez-async v0.8.2
[INFO] [stderr]    Compiling btleplug v0.11.8
[INFO] [stderr]    Compiling mlink-core v0.1.0 (/opt/rustwide/workdir/crates/mlink-core)
[INFO] [stdout] warning: associated items `flush_unacked_over`, `score`, and `should_switchback` are never used
[INFO] [stdout]    --> crates/mlink-core/src/core/session/io.rs:78:25
[INFO] [stdout]     |
[INFO] [stdout]  18 | impl Session {
[INFO] [stdout]     | ------------ associated items in this implementation
[INFO] [stdout] ...
[INFO] [stdout]  78 |     pub(crate) async fn flush_unacked_over(&self, link_id: &str) -> Result<()> {
[INFO] [stdout]     |                         ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 116 |     pub(crate) fn score(status: &LinkStatus) -> i64 {
[INFO] [stdout]     |                   ^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 146 |     pub(crate) async fn should_switchback(&self, current: &str, best: &str) -> bool {
[INFO] [stdout]     |                         ^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]    Compiling mlink-daemon v0.1.0 (/opt/rustwide/workdir/crates/mlink-daemon)
[INFO] [stdout] warning: value assigned to `received_ack` is never read
[INFO] [stdout]    --> crates/mlink-core/src/core/session/reader.rs:351:32
[INFO] [stdout]     |
[INFO] [stdout] 351 |         let mut received_ack = None;
[INFO] [stdout]     |                                ^^^^ this value is reassigned later and never used
[INFO] [stdout] ...
[INFO] [stdout] 361 |         received_ack = Some(ack);
[INFO] [stdout]     |         ------------------------ `received_ack` is overwritten here before the previous value is read
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_assignments)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> crates/mlink-core/tests/tcp_tests.rs:36:9
[INFO] [stdout]    |
[INFO] [stdout] 36 |     let mut client = TcpConnection::new(stream, addr.to_string());
[INFO] [stdout]    |         ----^^^^^^
[INFO] [stdout]    |         |
[INFO] [stdout]    |         help: remove this `mut`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_mut)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> crates/mlink-core/tests/tcp_tests.rs:69:9
[INFO] [stdout]    |
[INFO] [stdout] 69 |     let mut client = TcpConnection::new(stream, addr.to_string());
[INFO] [stdout]    |         ----^^^^^^
[INFO] [stdout]    |         |
[INFO] [stdout]    |         help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> crates/mlink-core/tests/tcp_tests.rs:112:13
[INFO] [stdout]     |
[INFO] [stdout] 112 |         let mut conn = TcpConnection::new(stream, "s");
[INFO] [stdout]     |             ----^^^^
[INFO] [stdout]     |             |
[INFO] [stdout]     |             help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> crates/mlink-core/tests/tcp_tests.rs:119:9
[INFO] [stdout]     |
[INFO] [stdout] 119 |     let mut client = TcpConnection::new(stream, addr.to_string());
[INFO] [stdout]     |         ----^^^^^^
[INFO] [stdout]     |         |
[INFO] [stdout]     |         help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> crates/mlink-core/tests/tcp_tests.rs:137:13
[INFO] [stdout]     |
[INFO] [stdout] 137 |         let mut conn = TcpConnection::new(stream, "s");
[INFO] [stdout]     |             ----^^^^
[INFO] [stdout]     |             |
[INFO] [stdout]     |             help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> crates/mlink-core/tests/tcp_tests.rs:147:9
[INFO] [stdout]     |
[INFO] [stdout] 147 |     let mut client = TcpConnection::new(stream, addr.to_string());
[INFO] [stdout]     |         ----^^^^^^
[INFO] [stdout]     |         |
[INFO] [stdout]     |         help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> crates/mlink-core/tests/tcp_tests.rs:170:13
[INFO] [stdout]     |
[INFO] [stdout] 170 |         let mut conn = TcpConnection::new(stream, "s");
[INFO] [stdout]     |             ----^^^^
[INFO] [stdout]     |             |
[INFO] [stdout]     |             help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> crates/mlink-core/tests/tcp_tests.rs:177:9
[INFO] [stdout]     |
[INFO] [stdout] 177 |     let mut client = TcpConnection::new(stream, addr.to_string());
[INFO] [stdout]     |         ----^^^^^^
[INFO] [stdout]     |         |
[INFO] [stdout]     |         help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> crates/mlink-core/tests/tcp_tests.rs:306:9
[INFO] [stdout]     |
[INFO] [stdout] 306 |     let mut client = TcpConnection::new(stream, addr.to_string());
[INFO] [stdout]     |         ----^^^^^^
[INFO] [stdout]     |         |
[INFO] [stdout]     |         help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> crates/mlink-core/tests/tcp_tests.rs:341:9
[INFO] [stdout]     |
[INFO] [stdout] 341 |     let mut client = TcpConnection::new(stream, addr.to_string());
[INFO] [stdout]     |         ----^^^^^^
[INFO] [stdout]     |         |
[INFO] [stdout]     |         help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> crates/mlink-core/examples/two_nodes.rs:26:10
[INFO] [stdout]    |
[INFO] [stdout] 26 |     let (mut node_a, mut node_b) = mock_pair();
[INFO] [stdout]    |          ----^^^^^^
[INFO] [stdout]    |          |
[INFO] [stdout]    |          help: remove this `mut`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_mut)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> crates/mlink-core/examples/two_nodes.rs:26:22
[INFO] [stdout]    |
[INFO] [stdout] 26 |     let (mut node_a, mut node_b) = mock_pair();
[INFO] [stdout]    |                      ----^^^^^^
[INFO] [stdout]    |                      |
[INFO] [stdout]    |                      help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> crates/mlink-core/src/transport/tcp.rs:621:17
[INFO] [stdout]     |
[INFO] [stdout] 621 |             let mut conn = TcpConnection::new(stream, "test-peer".to_string());
[INFO] [stdout]     |                 ----^^^^
[INFO] [stdout]     |                 |
[INFO] [stdout]     |                 help: remove this `mut`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_mut)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> crates/mlink-core/src/transport/tcp.rs:628:13
[INFO] [stdout]     |
[INFO] [stdout] 628 |         let mut client = TcpConnection::new(stream, addr.to_string());
[INFO] [stdout]     |             ----^^^^^^
[INFO] [stdout]     |             |
[INFO] [stdout]     |             help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> crates/mlink-core/src/transport/tcp.rs:643:17
[INFO] [stdout]     |
[INFO] [stdout] 643 |             let mut conn = TcpConnection::new(stream, "test-peer".to_string());
[INFO] [stdout]     |                 ----^^^^
[INFO] [stdout]     |                 |
[INFO] [stdout]     |                 help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> crates/mlink-core/src/transport/tcp.rs:651:13
[INFO] [stdout]     |
[INFO] [stdout] 651 |         let mut client = TcpConnection::new(stream, addr.to_string());
[INFO] [stdout]     |             ----^^^^^^
[INFO] [stdout]     |             |
[INFO] [stdout]     |             help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> crates/mlink-core/tests/phase3_tests.rs:17:10
[INFO] [stdout]    |
[INFO] [stdout] 17 |     let (mut a, mut b) = mock_pair();
[INFO] [stdout]    |          ----^
[INFO] [stdout]    |          |
[INFO] [stdout]    |          help: remove this `mut`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_mut)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> crates/mlink-core/tests/phase3_tests.rs:17:17
[INFO] [stdout]    |
[INFO] [stdout] 17 |     let (mut a, mut b) = mock_pair();
[INFO] [stdout]    |                 ----^
[INFO] [stdout]    |                 |
[INFO] [stdout]    |                 help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> crates/mlink-core/src/transport/tcp.rs:670:13
[INFO] [stdout]     |
[INFO] [stdout] 670 |         let mut client = TcpConnection::new(stream, addr.to_string());
[INFO] [stdout]     |             ----^^^^^^
[INFO] [stdout]     |             |
[INFO] [stdout]     |             help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> crates/mlink-core/tests/phase3_tests.rs:32:10
[INFO] [stdout]    |
[INFO] [stdout] 32 |     let (mut a, mut b) = mock_pair();
[INFO] [stdout]    |          ----^
[INFO] [stdout]    |          |
[INFO] [stdout]    |          help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> crates/mlink-core/tests/phase3_tests.rs:32:17
[INFO] [stdout]    |
[INFO] [stdout] 32 |     let (mut a, mut b) = mock_pair();
[INFO] [stdout]    |                 ----^
[INFO] [stdout]    |                 |
[INFO] [stdout]    |                 help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> crates/mlink-core/tests/phase6_tests.rs:69:10
[INFO] [stdout]    |
[INFO] [stdout] 69 |     let (mut a, mut b) = mock_pair();
[INFO] [stdout]    |          ----^
[INFO] [stdout]    |          |
[INFO] [stdout]    |          help: remove this `mut`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_mut)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> crates/mlink-core/tests/phase6_tests.rs:69:17
[INFO] [stdout]    |
[INFO] [stdout] 69 |     let (mut a, mut b) = mock_pair();
[INFO] [stdout]    |                 ----^
[INFO] [stdout]    |                 |
[INFO] [stdout]    |                 help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> crates/mlink-core/tests/phase6_tests.rs:93:10
[INFO] [stdout]    |
[INFO] [stdout] 93 |     let (mut a1, mut b1) = mock_pair();
[INFO] [stdout]    |          ----^^
[INFO] [stdout]    |          |
[INFO] [stdout]    |          help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> crates/mlink-core/tests/phase6_tests.rs:94:10
[INFO] [stdout]    |
[INFO] [stdout] 94 |     let (mut a2, mut b2) = mock_pair();
[INFO] [stdout]    |          ----^^
[INFO] [stdout]    |          |
[INFO] [stdout]    |          help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> crates/mlink-core/src/transport/tcp.rs:693:17
[INFO] [stdout]     |
[INFO] [stdout] 693 |             let mut conn = server_t.listen().await.unwrap();
[INFO] [stdout]     |                 ----^^^^
[INFO] [stdout]     |                 |
[INFO] [stdout]     |                 help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> crates/mlink-core/src/transport/tcp.rs:718:13
[INFO] [stdout]     |
[INFO] [stdout] 718 |         let mut client = client_t.connect(&peer).await.unwrap();
[INFO] [stdout]     |             ----^^^^^^
[INFO] [stdout]     |             |
[INFO] [stdout]     |             help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> crates/mlink-core/tests/phase6_tests.rs:119:10
[INFO] [stdout]     |
[INFO] [stdout] 119 |     let (mut w, mut r) = mock_pair();
[INFO] [stdout]     |          ----^
[INFO] [stdout]     |          |
[INFO] [stdout]     |          help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> crates/mlink-core/tests/phase6_tests.rs:119:17
[INFO] [stdout]     |
[INFO] [stdout] 119 |     let (mut w, mut r) = mock_pair();
[INFO] [stdout]     |                 ----^
[INFO] [stdout]     |                 |
[INFO] [stdout]     |                 help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> crates/mlink-core/tests/phase3_tests.rs:142:13
[INFO] [stdout]     |
[INFO] [stdout] 142 |         let mut conn = t.listen().await.expect("listen");
[INFO] [stdout]     |             ----^^^^
[INFO] [stdout]     |             |
[INFO] [stdout]     |             help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> crates/mlink-core/tests/phase3_tests.rs:153:9
[INFO] [stdout]     |
[INFO] [stdout] 153 |     let mut client = client_t
[INFO] [stdout]     |         ----^^^^^^
[INFO] [stdout]     |         |
[INFO] [stdout]     |         help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> crates/mlink-core/tests/phase3_tests.rs:177:13
[INFO] [stdout]     |
[INFO] [stdout] 177 |         let mut conn = t.listen().await.expect("listen");
[INFO] [stdout]     |             ----^^^^
[INFO] [stdout]     |             |
[INFO] [stdout]     |             help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> crates/mlink-core/tests/phase3_tests.rs:188:9
[INFO] [stdout]     |
[INFO] [stdout] 188 |     let mut client = client_t
[INFO] [stdout]     |         ----^^^^^^
[INFO] [stdout]     |         |
[INFO] [stdout]     |         help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> crates/mlink-core/tests/phase3_tests.rs:219:13
[INFO] [stdout]     |
[INFO] [stdout] 219 |         let mut conn = t.listen().await.expect("listen");
[INFO] [stdout]     |             ----^^^^
[INFO] [stdout]     |             |
[INFO] [stdout]     |             help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> crates/mlink-core/tests/phase3_tests.rs:230:9
[INFO] [stdout]     |
[INFO] [stdout] 230 |     let mut client = client_t
[INFO] [stdout]     |         ----^^^^^^
[INFO] [stdout]     |         |
[INFO] [stdout]     |         help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> crates/mlink-core/tests/phase6_tests.rs:328:10
[INFO] [stdout]     |
[INFO] [stdout] 328 |     let (mut client, mut server) = mock_pair();
[INFO] [stdout]     |          ----^^^^^^
[INFO] [stdout]     |          |
[INFO] [stdout]     |          help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> crates/mlink-core/tests/phase6_tests.rs:328:22
[INFO] [stdout]     |
[INFO] [stdout] 328 |     let (mut client, mut server) = mock_pair();
[INFO] [stdout]     |                      ----^^^^^^
[INFO] [stdout]     |                      |
[INFO] [stdout]     |                      help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `score` is never used
[INFO] [stdout]    --> crates/mlink-core/src/core/session/io.rs:116:19
[INFO] [stdout]     |
[INFO] [stdout]  18 | impl Session {
[INFO] [stdout]     | ------------ associated function in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 116 |     pub(crate) fn score(status: &LinkStatus) -> i64 {
[INFO] [stdout]     |                   ^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> crates/mlink-core/tests/phase6_tests.rs:458:10
[INFO] [stdout]     |
[INFO] [stdout] 458 |     let (mut pub_side, mut sub_side) = mock_pair();
[INFO] [stdout]     |          ----^^^^^^^^
[INFO] [stdout]     |          |
[INFO] [stdout]     |          help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> crates/mlink-core/tests/phase6_tests.rs:458:24
[INFO] [stdout]     |
[INFO] [stdout] 458 |     let (mut pub_side, mut sub_side) = mock_pair();
[INFO] [stdout]     |                        ----^^^^^^^^
[INFO] [stdout]     |                        |
[INFO] [stdout]     |                        help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]    Compiling mlink-cli v0.1.0 (/opt/rustwide/workdir/crates/mlink-cli)
[INFO] [stderr]     Finished `test` profile [unoptimized + debuginfo] target(s) in 1m 04s
[INFO] running `Command { std: "docker" "inspect" "5375979bae0abcc69af3cc96e36880bff8c5b2dfa299961a2780ef4eee48804d", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "5375979bae0abcc69af3cc96e36880bff8c5b2dfa299961a2780ef4eee48804d", kill_on_drop: false }`
[INFO] [stdout] 5375979bae0abcc69af3cc96e36880bff8c5b2dfa299961a2780ef4eee48804d
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-4-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-4-tc1/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=forbid" "-e" "RUSTDOCFLAGS=--cap-lints=forbid" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:d429b63d4308055ea97f60fb1d3dfca48854a00942f1bd2ad806beaf015945ec" "/opt/rustwide/cargo-home/bin/cargo" "+cced03bfd61a304243a34504618ecec86c17063f" "test" "--frozen", kill_on_drop: false }`
[INFO] [stdout] ddb5876a986afdd6b0d1ebf10ba215fe9d3cfbda8ac368da216fdd27c035f605
[INFO] running `Command { std: "docker" "start" "-a" "ddb5876a986afdd6b0d1ebf10ba215fe9d3cfbda8ac368da216fdd27c035f605", kill_on_drop: false }`
[INFO] [stderr] warning: associated items `flush_unacked_over`, `score`, and `should_switchback` are never used
[INFO] [stderr]    --> crates/mlink-core/src/core/session/io.rs:78:25
[INFO] [stderr]     |
[INFO] [stderr]  18 | impl Session {
[INFO] [stderr]     | ------------ associated items in this implementation
[INFO] [stderr] ...
[INFO] [stderr]  78 |     pub(crate) async fn flush_unacked_over(&self, link_id: &str) -> Result<()> {
[INFO] [stderr]     |                         ^^^^^^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 116 |     pub(crate) fn score(status: &LinkStatus) -> i64 {
[INFO] [stderr]     |                   ^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 146 |     pub(crate) async fn should_switchback(&self, current: &str, best: &str) -> bool {
[INFO] [stderr]     |                         ^^^^^^^^^^^^^^^^^
[INFO] [stderr]     |
[INFO] [stderr]     = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stderr] 
[INFO] [stderr] warning: `mlink-core` (lib) generated 1 warning
[INFO] [stderr] warning: variable does not need to be mutable
[INFO] [stderr]   --> crates/mlink-core/tests/phase3_tests.rs:17:10
[INFO] [stderr]    |
[INFO] [stderr] 17 |     let (mut a, mut b) = mock_pair();
[INFO] [stderr]    |          ----^
[INFO] [stderr]    |          |
[INFO] [stderr]    |          help: remove this `mut`
[INFO] [stderr]    |
[INFO] [stderr]    = note: `#[warn(unused_mut)]` (part of `#[warn(unused)]`) on by default
[INFO] [stderr] 
[INFO] [stderr] warning: variable does not need to be mutable
[INFO] [stderr]   --> crates/mlink-core/tests/phase3_tests.rs:17:17
[INFO] [stderr]    |
[INFO] [stderr] 17 |     let (mut a, mut b) = mock_pair();
[INFO] [stderr]    |                 ----^
[INFO] [stderr]    |                 |
[INFO] [stderr]    |                 help: remove this `mut`
[INFO] [stderr] 
[INFO] [stderr] warning: variable does not need to be mutable
[INFO] [stderr]   --> crates/mlink-core/tests/phase3_tests.rs:32:10
[INFO] [stderr]    |
[INFO] [stderr] 32 |     let (mut a, mut b) = mock_pair();
[INFO] [stderr]    |          ----^
[INFO] [stderr]    |          |
[INFO] [stderr]    |          help: remove this `mut`
[INFO] [stderr] 
[INFO] [stderr] warning: variable does not need to be mutable
[INFO] [stderr]   --> crates/mlink-core/tests/phase3_tests.rs:32:17
[INFO] [stderr]    |
[INFO] [stderr] 32 |     let (mut a, mut b) = mock_pair();
[INFO] [stderr]    |                 ----^
[INFO] [stderr]    |                 |
[INFO] [stderr]    |                 help: remove this `mut`
[INFO] [stderr] 
[INFO] [stderr] warning: variable does not need to be mutable
[INFO] [stderr]    --> crates/mlink-core/tests/phase3_tests.rs:142:13
[INFO] [stderr]     |
[INFO] [stderr] 142 |         let mut conn = t.listen().await.expect("listen");
[INFO] [stderr]     |             ----^^^^
[INFO] [stderr]     |             |
[INFO] [stderr]     |             help: remove this `mut`
[INFO] [stderr] 
[INFO] [stderr] warning: variable does not need to be mutable
[INFO] [stderr]    --> crates/mlink-core/tests/phase3_tests.rs:153:9
[INFO] [stderr]     |
[INFO] [stderr] 153 |     let mut client = client_t
[INFO] [stderr]     |         ----^^^^^^
[INFO] [stderr]     |         |
[INFO] [stderr]     |         help: remove this `mut`
[INFO] [stderr] 
[INFO] [stderr] warning: variable does not need to be mutable
[INFO] [stderr]    --> crates/mlink-core/tests/phase3_tests.rs:177:13
[INFO] [stderr]     |
[INFO] [stderr] 177 |         let mut conn = t.listen().await.expect("listen");
[INFO] [stderr]     |             ----^^^^
[INFO] [stderr]     |             |
[INFO] [stderr]     |             help: remove this `mut`
[INFO] [stderr] 
[INFO] [stderr] warning: variable does not need to be mutable
[INFO] [stderr]    --> crates/mlink-core/tests/phase3_tests.rs:188:9
[INFO] [stderr]     |
[INFO] [stderr] 188 |     let mut client = client_t
[INFO] [stderr]     |         ----^^^^^^
[INFO] [stderr]     |         |
[INFO] [stderr]     |         help: remove this `mut`
[INFO] [stderr] 
[INFO] [stderr] warning: variable does not need to be mutable
[INFO] [stderr]    --> crates/mlink-core/tests/phase3_tests.rs:219:13
[INFO] [stderr]     |
[INFO] [stderr] 219 |         let mut conn = t.listen().await.expect("listen");
[INFO] [stderr]     |             ----^^^^
[INFO] [stderr]     |             |
[INFO] [stderr]     |             help: remove this `mut`
[INFO] [stderr] 
[INFO] [stderr] warning: variable does not need to be mutable
[INFO] [stderr]    --> crates/mlink-core/tests/phase3_tests.rs:230:9
[INFO] [stderr]     |
[INFO] [stderr] 230 |     let mut client = client_t
[INFO] [stderr]     |         ----^^^^^^
[INFO] [stderr]     |         |
[INFO] [stderr]     |         help: remove this `mut`
[INFO] [stderr] 
[INFO] [stderr] warning: value assigned to `received_ack` is never read
[INFO] [stderr]    --> crates/mlink-core/src/core/session/reader.rs:351:32
[INFO] [stderr]     |
[INFO] [stderr] 351 |         let mut received_ack = None;
[INFO] [stderr]     |                                ^^^^ this value is reassigned later and never used
[INFO] [stderr] ...
[INFO] [stderr] 361 |         received_ack = Some(ack);
[INFO] [stderr]     |         ------------------------ `received_ack` is overwritten here before the previous value is read
[INFO] [stderr]     |
[INFO] [stderr]     = note: `#[warn(unused_assignments)]` (part of `#[warn(unused)]`) on by default
[INFO] [stderr] 
[INFO] [stderr] warning: variable does not need to be mutable
[INFO] [stderr]    --> crates/mlink-core/src/transport/tcp.rs:621:17
[INFO] [stderr]     |
[INFO] [stderr] 621 |             let mut conn = TcpConnection::new(stream, "test-peer".to_string());
[INFO] [stderr]     |                 ----^^^^
[INFO] [stderr]     |                 |
[INFO] [stderr]     |                 help: remove this `mut`
[INFO] [stderr]     |
[INFO] [stderr]     = note: `#[warn(unused_mut)]` (part of `#[warn(unused)]`) on by default
[INFO] [stderr] 
[INFO] [stderr] warning: variable does not need to be mutable
[INFO] [stderr]    --> crates/mlink-core/src/transport/tcp.rs:628:13
[INFO] [stderr]     |
[INFO] [stderr] 628 |         let mut client = TcpConnection::new(stream, addr.to_string());
[INFO] [stderr]     |             ----^^^^^^
[INFO] [stderr]     |             |
[INFO] [stderr]     |             help: remove this `mut`
[INFO] [stderr] 
[INFO] [stderr] warning: variable does not need to be mutable
[INFO] [stderr]    --> crates/mlink-core/src/transport/tcp.rs:643:17
[INFO] [stderr]     |
[INFO] [stderr] 643 |             let mut conn = TcpConnection::new(stream, "test-peer".to_string());
[INFO] [stderr]     |                 ----^^^^
[INFO] [stderr]     |                 |
[INFO] [stderr]     |                 help: remove this `mut`
[INFO] [stderr] 
[INFO] [stderr] warning: variable does not need to be mutable
[INFO] [stderr]    --> crates/mlink-core/src/transport/tcp.rs:651:13
[INFO] [stderr]     |
[INFO] [stderr] 651 |         let mut client = TcpConnection::new(stream, addr.to_string());
[INFO] [stderr]     |             ----^^^^^^
[INFO] [stderr]     |             |
[INFO] [stderr]     |             help: remove this `mut`
[INFO] [stderr] 
[INFO] [stderr] warning: variable does not need to be mutable
[INFO] [stderr]    --> crates/mlink-core/src/transport/tcp.rs:670:13
[INFO] [stderr]     |
[INFO] [stderr] 670 |         let mut client = TcpConnection::new(stream, addr.to_string());
[INFO] [stderr]     |             ----^^^^^^
[INFO] [stderr]     |             |
[INFO] [stderr]     |             help: remove this `mut`
[INFO] [stderr] 
[INFO] [stderr] warning: variable does not need to be mutable
[INFO] [stderr]    --> crates/mlink-core/src/transport/tcp.rs:693:17
[INFO] [stderr]     |
[INFO] [stderr] 693 |             let mut conn = server_t.listen().await.unwrap();
[INFO] [stderr]     |                 ----^^^^
[INFO] [stderr]     |                 |
[INFO] [stderr]     |                 help: remove this `mut`
[INFO] [stderr] 
[INFO] [stderr] warning: variable does not need to be mutable
[INFO] [stderr]    --> crates/mlink-core/src/transport/tcp.rs:718:13
[INFO] [stderr]     |
[INFO] [stderr] 718 |         let mut client = client_t.connect(&peer).await.unwrap();
[INFO] [stderr]     |             ----^^^^^^
[INFO] [stderr]     |             |
[INFO] [stderr]     |             help: remove this `mut`
[INFO] [stderr] 
[INFO] [stderr] warning: associated function `score` is never used
[INFO] [stderr]    --> crates/mlink-core/src/core/session/io.rs:116:19
[INFO] [stderr]     |
[INFO] [stderr]  18 | impl Session {
[INFO] [stderr]     | ------------ associated function in this implementation
[INFO] [stderr] ...
[INFO] [stderr] 116 |     pub(crate) fn score(status: &LinkStatus) -> i64 {
[INFO] [stderr]     |                   ^^^^^
[INFO] [stderr]     |
[INFO] [stderr]     = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stderr] 
[INFO] [stderr] warning: variable does not need to be mutable
[INFO] [stderr]   --> crates/mlink-core/tests/tcp_tests.rs:36:9
[INFO] [stderr]    |
[INFO] [stderr] 36 |     let mut client = TcpConnection::new(stream, addr.to_string());
[INFO] [stderr]    |         ----^^^^^^
[INFO] [stderr]    |         |
[INFO] [stderr]    |         help: remove this `mut`
[INFO] [stderr]    |
[INFO] [stderr]    = note: `#[warn(unused_mut)]` (part of `#[warn(unused)]`) on by default
[INFO] [stderr] 
[INFO] [stderr] warning: variable does not need to be mutable
[INFO] [stderr]   --> crates/mlink-core/tests/tcp_tests.rs:69:9
[INFO] [stderr]    |
[INFO] [stderr] 69 |     let mut client = TcpConnection::new(stream, addr.to_string());
[INFO] [stderr]    |         ----^^^^^^
[INFO] [stderr]    |         |
[INFO] [stderr]    |         help: remove this `mut`
[INFO] [stderr] 
[INFO] [stderr] warning: variable does not need to be mutable
[INFO] [stderr]    --> crates/mlink-core/tests/tcp_tests.rs:112:13
[INFO] [stderr]     |
[INFO] [stderr] 112 |         let mut conn = TcpConnection::new(stream, "s");
[INFO] [stderr]     |             ----^^^^
[INFO] [stderr]     |             |
[INFO] [stderr]     |             help: remove this `mut`
[INFO] [stderr] 
[INFO] [stderr] warning: variable does not need to be mutable
[INFO] [stderr]    --> crates/mlink-core/tests/tcp_tests.rs:119:9
[INFO] [stderr]     |
[INFO] [stderr] 119 |     let mut client = TcpConnection::new(stream, addr.to_string());
[INFO] [stderr]     |         ----^^^^^^
[INFO] [stderr]     |         |
[INFO] [stderr]     |         help: remove this `mut`
[INFO] [stderr] 
[INFO] [stderr] warning: variable does not need to be mutable
[INFO] [stderr]    --> crates/mlink-core/tests/tcp_tests.rs:137:13
[INFO] [stderr]     |
[INFO] [stderr] 137 |         let mut conn = TcpConnection::new(stream, "s");
[INFO] [stderr]     |             ----^^^^
[INFO] [stderr]     |             |
[INFO] [stderr]     |             help: remove this `mut`
[INFO] [stderr] 
[INFO] [stderr] warning: variable does not need to be mutable
[INFO] [stderr]    --> crates/mlink-core/tests/tcp_tests.rs:147:9
[INFO] [stderr]     |
[INFO] [stderr] 147 |     let mut client = TcpConnection::new(stream, addr.to_string());
[INFO] [stderr]     |         ----^^^^^^
[INFO] [stderr]     |         |
[INFO] [stderr]     |         help: remove this `mut`
[INFO] [stderr] 
[INFO] [stderr] warning: variable does not need to be mutable
[INFO] [stderr]    --> crates/mlink-core/tests/tcp_tests.rs:170:13
[INFO] [stderr]     |
[INFO] [stderr] 170 |         let mut conn = TcpConnection::new(stream, "s");
[INFO] [stderr]     |             ----^^^^
[INFO] [stderr]     |             |
[INFO] [stderr]     |             help: remove this `mut`
[INFO] [stderr] 
[INFO] [stderr] warning: variable does not need to be mutable
[INFO] [stderr]    --> crates/mlink-core/tests/tcp_tests.rs:177:9
[INFO] [stderr]     |
[INFO] [stderr] 177 |     let mut client = TcpConnection::new(stream, addr.to_string());
[INFO] [stderr]     |         ----^^^^^^
[INFO] [stderr]     |         |
[INFO] [stderr]     |         help: remove this `mut`
[INFO] [stderr] 
[INFO] [stderr] warning: variable does not need to be mutable
[INFO] [stderr]    --> crates/mlink-core/tests/tcp_tests.rs:306:9
[INFO] [stderr]     |
[INFO] [stderr] 306 |     let mut client = TcpConnection::new(stream, addr.to_string());
[INFO] [stderr]     |         ----^^^^^^
[INFO] [stderr]     |         |
[INFO] [stderr]     |         help: remove this `mut`
[INFO] [stderr] 
[INFO] [stderr] warning: variable does not need to be mutable
[INFO] [stderr]    --> crates/mlink-core/tests/tcp_tests.rs:341:9
[INFO] [stderr]     |
[INFO] [stderr] 341 |     let mut client = TcpConnection::new(stream, addr.to_string());
[INFO] [stderr]     |         ----^^^^^^
[INFO] [stderr]     |         |
[INFO] [stderr]     |         help: remove this `mut`
[INFO] [stderr] 
[INFO] [stderr] warning: variable does not need to be mutable
[INFO] [stderr]   --> crates/mlink-core/examples/two_nodes.rs:26:10
[INFO] [stderr]    |
[INFO] [stderr] 26 |     let (mut node_a, mut node_b) = mock_pair();
[INFO] [stderr]    |          ----^^^^^^
[INFO] [stderr]    |          |
[INFO] [stderr]    |          help: remove this `mut`
[INFO] [stderr]    |
[INFO] [stderr]    = note: `#[warn(unused_mut)]` (part of `#[warn(unused)]`) on by default
[INFO] [stderr] 
[INFO] [stderr] warning: variable does not need to be mutable
[INFO] [stderr]   --> crates/mlink-core/examples/two_nodes.rs:26:22
[INFO] [stderr]    |
[INFO] [stderr] 26 |     let (mut node_a, mut node_b) = mock_pair();
[INFO] [stderr]    |                      ----^^^^^^
[INFO] [stderr]    |                      |
[INFO] [stderr]    |                      help: remove this `mut`
[INFO] [stderr] 
[INFO] [stderr] warning: variable does not need to be mutable
[INFO] [stderr]   --> crates/mlink-core/tests/phase6_tests.rs:69:10
[INFO] [stderr]    |
[INFO] [stderr] 69 |     let (mut a, mut b) = mock_pair();
[INFO] [stderr]    |          ----^
[INFO] [stderr]    |          |
[INFO] [stderr]    |          help: remove this `mut`
[INFO] [stderr]    |
[INFO] [stderr]    = note: `#[warn(unused_mut)]` (part of `#[warn(unused)]`) on by default
[INFO] [stderr] 
[INFO] [stderr] warning: variable does not need to be mutable
[INFO] [stderr]   --> crates/mlink-core/tests/phase6_tests.rs:69:17
[INFO] [stderr]    |
[INFO] [stderr] 69 |     let (mut a, mut b) = mock_pair();
[INFO] [stderr]    |                 ----^
[INFO] [stderr]    |                 |
[INFO] [stderr]    |                 help: remove this `mut`
[INFO] [stderr] 
[INFO] [stderr] warning: variable does not need to be mutable
[INFO] [stderr]   --> crates/mlink-core/tests/phase6_tests.rs:93:10
[INFO] [stderr]    |
[INFO] [stderr] 93 |     let (mut a1, mut b1) = mock_pair();
[INFO] [stderr]    |          ----^^
[INFO] [stderr]    |          |
[INFO] [stderr]    |          help: remove this `mut`
[INFO] [stderr] 
[INFO] [stderr] warning: variable does not need to be mutable
[INFO] [stderr]   --> crates/mlink-core/tests/phase6_tests.rs:94:10
[INFO] [stderr]    |
[INFO] [stderr] 94 |     let (mut a2, mut b2) = mock_pair();
[INFO] [stderr]    |          ----^^
[INFO] [stderr]    |          |
[INFO] [stderr]    |          help: remove this `mut`
[INFO] [stderr] 
[INFO] [stderr] warning: variable does not need to be mutable
[INFO] [stderr]    --> crates/mlink-core/tests/phase6_tests.rs:119:10
[INFO] [stderr]     |
[INFO] [stderr] 119 |     let (mut w, mut r) = mock_pair();
[INFO] [stderr]     |          ----^
[INFO] [stderr]     |          |
[INFO] [stderr]     |          help: remove this `mut`
[INFO] [stderr] 
[INFO] [stderr] warning: variable does not need to be mutable
[INFO] [stderr]    --> crates/mlink-core/tests/phase6_tests.rs:119:17
[INFO] [stderr]     |
[INFO] [stderr] 119 |     let (mut w, mut r) = mock_pair();
[INFO] [stderr]     |                 ----^
[INFO] [stderr]     |                 |
[INFO] [stderr]     |                 help: remove this `mut`
[INFO] [stderr] 
[INFO] [stderr] warning: variable does not need to be mutable
[INFO] [stderr]    --> crates/mlink-core/tests/phase6_tests.rs:328:10
[INFO] [stderr]     |
[INFO] [stderr] 328 |     let (mut client, mut server) = mock_pair();
[INFO] [stderr]     |          ----^^^^^^
[INFO] [stderr]     |          |
[INFO] [stderr]     |          help: remove this `mut`
[INFO] [stderr] 
[INFO] [stderr] warning: variable does not need to be mutable
[INFO] [stderr]    --> crates/mlink-core/tests/phase6_tests.rs:328:22
[INFO] [stderr]     |
[INFO] [stderr] 328 |     let (mut client, mut server) = mock_pair();
[INFO] [stderr]     |                      ----^^^^^^
[INFO] [stderr]     |                      |
[INFO] [stderr]     |                      help: remove this `mut`
[INFO] [stderr] 
[INFO] [stderr] warning: variable does not need to be mutable
[INFO] [stderr]    --> crates/mlink-core/tests/phase6_tests.rs:458:10
[INFO] [stderr]     |
[INFO] [stderr] 458 |     let (mut pub_side, mut sub_side) = mock_pair();
[INFO] [stderr]     |          ----^^^^^^^^
[INFO] [stderr]     |          |
[INFO] [stderr]     |          help: remove this `mut`
[INFO] [stderr] 
[INFO] [stderr] warning: variable does not need to be mutable
[INFO] [stderr]    --> crates/mlink-core/tests/phase6_tests.rs:458:24
[INFO] [stderr]     |
[INFO] [stderr] 458 |     let (mut pub_side, mut sub_side) = mock_pair();
[INFO] [stderr]     |                        ----^^^^^^^^
[INFO] [stderr]     |                        |
[INFO] [stderr]     |                        help: remove this `mut`
[INFO] [stderr] 
[INFO] [stderr] warning: `mlink-core` (test "phase3_tests") generated 10 warnings (run `cargo fix --test "phase3_tests" -p mlink-core` to apply 10 suggestions)
[INFO] [stderr] warning: `mlink-core` (lib test) generated 9 warnings (run `cargo fix --lib -p mlink-core --tests` to apply 7 suggestions)
[INFO] [stderr] warning: `mlink-core` (test "tcp_tests") generated 10 warnings (run `cargo fix --test "tcp_tests" -p mlink-core` to apply 10 suggestions)
[INFO] [stderr] warning: `mlink-core` (example "two_nodes") generated 2 warnings (run `cargo fix --example "two_nodes" -p mlink-core` to apply 2 suggestions)
[INFO] [stderr] warning: `mlink-core` (test "phase6_tests") generated 10 warnings (run `cargo fix --test "phase6_tests" -p mlink-core` to apply 10 suggestions)
[INFO] [stderr]     Finished `test` profile [unoptimized + debuginfo] target(s) in 1.35s
[INFO] [stderr]      Running unittests src/lib.rs (/opt/rustwide/target/debug/deps/mlink_cli-6910f7c62c8f6fdf)
[INFO] [stdout] 
[INFO] [stdout] running 0 tests
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
[INFO] [stdout] 
[INFO] [stderr]      Running unittests src/main.rs (/opt/rustwide/target/debug/deps/mlink-1acfc5aac6d75dcb)
[INFO] [stdout] 
[INFO] [stdout] running 1 test
[INFO] [stdout] test util::backoff::tests::random_backoff_stays_within_window ... ok
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
[INFO] [stdout] 
[INFO] [stderr]      Running tests/cli_tests.rs (/opt/rustwide/target/debug/deps/cli_tests-8ae89ea8a9e0040d)
[INFO] [stdout] 
[INFO] [stdout] running 39 tests
[INFO] [stdout] test test_join_command_parses ... ok
[INFO] [stdout] test test_join_with_chat_flag ... ok
[INFO] [stdout] test test_room_join_missing_code_fails ... ok
[INFO] [stdout] test test_room_leave ... ok
[INFO] [stdout] test test_oneline_code_567892 ... ok
[INFO] [stdout] test test_no_args_is_one_shot_mode ... ok
[INFO] [stdout] test test_join_missing_code_fails ... ok
[INFO] [stdout] test test_ping_command ... ok
[INFO] [stdout] test test_connect_command ... ok
[INFO] [stdout] test test_doctor ... ok
[INFO] [stdout] test test_room_join ... ok
[INFO] [stdout] test test_listen_command ... ok
[INFO] [stdout] test test_oneline_no_args_none_none ... ok
[INFO] [stdout] test test_connect_missing_peer_id_fails ... ok
[INFO] [stdout] test test_oneline_send_subcommand_still_works ... ok
[INFO] [stdout] test test_bare_code_is_one_shot_join ... ok
[INFO] [stdout] test test_room_new ... ok
[INFO] [stdout] test test_room_peers ... ok
[INFO] [stdout] test test_room_new_extra_arg_fails ... ok
[INFO] [stdout] test test_room_list ... ok
[INFO] [stdout] test test_scan_command ... ok
[INFO] [stdout] test test_send_command ... ok
[INFO] [stdout] test test_validate_room_code_rejects_non_digits ... ok
[INFO] [stdout] test test_send_with_file ... ok
[INFO] [stdout] test test_serve_command ... ok
[INFO] [stdout] test test_status ... ok
[INFO] [stdout] test test_send_with_message ... ok
[INFO] [stdout] test test_transport_kind_parses_ble_and_tcp ... ok
[INFO] [stdout] test test_transport_kind_rejects_empty_and_case_mismatch ... ok
[INFO] [stdout] test test_transport_kind_rejects_foo ... ok
[INFO] [stdout] test test_trust_remove ... ok
[INFO] [stdout] test test_validate_room_code_rejects_5_digits ... ok
[INFO] [stdout] test test_validate_room_code_rejects_7_digits ... ok
[INFO] [stdout] test test_validate_room_code_rejects_empty ... ok
[INFO] [stdout] test test_validate_room_code_accepts_6_digits ... ok
[INFO] [stdout] test test_validate_room_code_rejects_short ... ok
[INFO] [stdout] test test_unknown_subcommand_fails ... ok
[INFO] [stdout] test test_trust_list ... ok
[INFO] [stdout] test test_send_missing_message_parses_ok_but_runtime_errors ... ok
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 39 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.14s
[INFO] [stdout] 
[INFO] [stderr]      Running tests/conn_tracker_tests.rs (/opt/rustwide/target/debug/deps/conn_tracker_tests-370fd25475226d5c)
[INFO] [stdout] 
[INFO] [stdout] running 18 tests
[INFO] [stdout] test bump_attempt_returns_none_at_max ... ok
[INFO] [stdout] test on_peer_disconnected_drops_connected_and_wire_mapping ... ok
[INFO] [stdout] test on_accept_err_releases_both_flags ... ok
[INFO] [stdout] test on_dial_ok_clears_attempts_and_records_mapping ... ok
[INFO] [stdout] test bump_attempt_increments_from_zero ... ok
[INFO] [stdout] test room_mismatch_dial_pins_counter_and_releases_engaged ... ok
[INFO] [stdout] test on_dial_err_preserves_attempts_counter ... ok
[INFO] [stdout] test on_accept_begin_sets_both_flags ... ok
[INFO] [stdout] test bump_attempt_marks_engaged ... ok
[INFO] [stdout] test on_peer_disconnected_only_prunes_matching_app ... ok
[INFO] [stdout] test peer_connected_marks_app_without_wire_mapping ... ok
[INFO] [stdout] test skip_dial_prefers_inbound_over_engaged ... ok
[INFO] [stdout] test skip_dial_reports_max_retries_once_pinned ... ok
[INFO] [stdout] test skip_dial_returns_connected_when_not_engaged_but_app_is_live ... ok
[INFO] [stdout] test skip_dial_returns_none_for_fresh_wire ... ok
[INFO] [stdout] test skip_dial_short_circuits_on_wire_to_app_connected ... ok
[INFO] [stdout] test on_accept_ok_records_wire_to_app_and_keeps_inbound ... ok
[INFO] [stderr]      Running tests/role_and_channels_tests.rs (/opt/rustwide/target/debug/deps/role_and_channels_tests-c9d54d178ae33d48)
[INFO] [stdout] test skip_dial_reports_engaged_when_only_dialing ... ok
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 18 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.06s
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] running 8 tests
[INFO] [stdout] test ble_with_wrong_metadata_length_falls_through_to_dial ... ok
[INFO] [stdout] test ble_peer_outranked_local_dials ... ok
[INFO] [stdout] test ble_peer_outranks_local_skips ... ok
[INFO] [stdout] test ble_tie_or_invalid_uuid_falls_back_to_symmetric ... ok
[INFO] [stdout] test tcp_always_dials ... ok
[INFO] [stderr]      Running unittests src/lib.rs (/opt/rustwide/target/debug/deps/mlink_core-955811f05f8b9858)
[INFO] [stdout] test disabled_stdin_recv_returns_none ... ok
[INFO] [stdout] test disabled_scanner_unsee_send_fails_immediately ... ok
[INFO] [stdout] test disabled_scanner_send_error_carries_payload ... ok
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 8 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] running 267 tests
[INFO] [stdout] test api::pubsub::tests::decode_publish_rejects_garbage ... ok
[INFO] [stdout] test api::pubsub::tests::encode_decode_publish_round_trip ... ok
[INFO] [stdout] test api::pubsub::tests::is_subscribed_reflects_state ... ok
[INFO] [stdout] test api::pubsub::tests::subscribe_adds_peer_once ... ok
[INFO] [stdout] test api::pubsub::tests::publish_with_no_subscribers_is_ok ... ok
[INFO] [stdout] test api::pubsub::tests::remove_peer_cleans_all_subscriptions ... ok
[INFO] [stdout] test api::pubsub::tests::subscribe_tracks_multiple_peers ... ok
[INFO] [stdout] test api::pubsub::tests::topics_for_peer_lists_all ... ok
[INFO] [stdout] test api::pubsub::tests::unsubscribe_last_peer_drops_topic ... ok
[INFO] [stdout] test api::pubsub::tests::unsubscribe_missing_is_noop ... ok
[INFO] [stdout] test api::pubsub::tests::unsubscribe_removes_peer ... ok
[INFO] [stdout] test api::message::tests::broadcast_empty_peers_is_ok ... ok
[INFO] [stdout] test api::rpc::tests::decode_request_rejects_garbage ... ok
[INFO] [stdout] test api::message::tests::send_message_missing_peer_errors ... ok
[INFO] [stdout] test api::rpc::tests::pending_requests_complete_delivers_response ... ok
[INFO] [stdout] test api::rpc::tests::pending_requests_complete_missing_returns_false ... ok
[INFO] [stdout] test api::rpc::tests::registry_handler_error_propagates ... ok
[INFO] [stdout] test api::rpc::tests::registry_unknown_method ... ok
[INFO] [stdout] test api::stream::tests::xor8_checksum_basic ... ok
[INFO] [stdout] test api::rpc::tests::registry_register_and_handle ... ok
[INFO] [stdout] test api::rpc::tests::request_response_round_trip_via_msgpack ... ok
[INFO] [stdout] test api::stream::tests::central_counter_steps_by_two_even ... ok
[INFO] [stdout] test api::stream::tests::progress_full ... ok
[INFO] [stdout] test api::stream::tests::progress_percent_basic ... ok
[INFO] [stdout] test core::connection::tests::attach_link_async_creates_session_and_exposes_via_session_manager ... ok
[INFO] [stdout] test core::connection::tests::manager_shared_returns_clone ... ok
[INFO] [stdout] test core::connection::tests::perform_handshake_round_trip ... ok
[INFO] [stdout] test core::connection::tests::manager_remove_returns_conn ... ok
[INFO] [stdout] test api::rpc::tests::registry_unregister_removes ... ok
[INFO] [stdout] test api::stream::tests::stream_end_msg_serde ... ok
[INFO] [stdout] test core::connection::tests::role_negotiation_handles_equal_uuids ... ok
[INFO] [stdout] test api::stream::tests::stream_chunk_msg_serde ... ok
[INFO] [stdout] test core::connection::tests::perform_handshake_times_out_on_silent_peer ... ok
[INFO] [stdout] test api::stream::tests::peripheral_counter_steps_by_two_odd ... ok
[INFO] [stdout] test core::connection::tests::role_negotiation_is_deterministic_pairwise ... ok
[INFO] [stdout] test core::connection::tests::perform_handshake_with_resume_streams ... ok
[INFO] [stdout] test core::connection::tests::role_negotiation_smaller_uuid_is_central ... ok
[INFO] [stdout] test api::stream::tests::progress_zero_total_is_full ... ok
[INFO] [stdout] test core::connection::tests::switch_active_link_rejects_unknown_peer_or_link ... ok
[INFO] [stdout] test core::connection::tests::switch_active_link_emits_manual_switched_event ... ok
[INFO] [stdout] test core::connection::tests::sync_and_async_paths_are_independent ... ok
[INFO] [stdout] test api::rpc::tests::pending_requests_cancel_removes ... ok
[INFO] [stdout] test core::node::tests::accept_incoming_is_idempotent_when_already_connected ... ok
[INFO] [stdout] test api::rpc::tests::pending_requests_next_id_is_monotonic_with_wrap ... ok
[INFO] [stdout] test core::connection::tests::attach_secondary_link_merges_when_session_id_matches ... ok
[INFO] [stdout] test core::connection::tests::manager_add_and_count ... ok
[INFO] [stdout] test core::node::tests::node_state_is_copy ... ok
[INFO] [stdout] test core::connection::tests::perform_handshake_rejects_non_handshake_reply ... ok
[INFO] [stdout] test core::node::tests::node_config_default_encrypt_false ... ok
[INFO] [stdout] test core::node::tests::accept_incoming_matching_room_registers_peer ... ok
[INFO] [stdout] test core::node::tests::attach_connection_enables_send_recv_without_handshake ... ok
[INFO] [stdout] test core::node::tests::accept_incoming_mismatched_room_rejects ... ok
[INFO] [stdout] test core::node::tests::connect_peer_matching_room_happy_path ... ok
[INFO] [stdout] test core::node::tests::connect_peer_matching_room_roundtrip_is_accepted ... ok
[INFO] [stdout] test core::node::tests::connect_peer_via_mock_transport_errors_cleanly ... ok
[INFO] [stdout] test core::node::tests::connect_peer_rejects_mismatched_room ... ok
[INFO] [stdout] test core::node::tests::test_config_helper_used ... ok
[INFO] [stdout] test core::peer::tests::generate_app_uuid_is_unique ... ok
[INFO] [stdout] test core::peer::tests::add_and_get ... ok
[INFO] [stdout] test core::node::tests::has_peer_tracks_attach_and_disconnect ... ok
[INFO] [stdout] test core::peer::tests::list_returns_all ... ok
[INFO] [stdout] test core::peer::tests::remove_missing_returns_none ... ok
[INFO] [stdout] test core::peer::tests::load_or_create_app_uuid_is_stable ... ok
[INFO] [stdout] test core::node::tests::check_heartbeat_missing_peer_fails ... ok
[INFO] [stdout] test core::room::tests::generate_room_code_is_six_digits ... ok
[INFO] [stdout] test core::peer::tests::remove_returns_peer ... ok
[INFO] [stdout] test core::room::tests::generate_room_code_preserves_leading_zeros ... ok
[INFO] [stdout] test core::node::tests::connect_peer_dedup_when_already_connected ... ok
[INFO] [stdout] test core::room::tests::manager_active_hashes_matches_rooms ... ok
[INFO] [stdout] test core::room::tests::manager_add_and_remove_peer ... ok
[INFO] [stdout] test core::node::tests::new_starts_idle ... ok
[INFO] [stdout] test core::node::tests::node_in_multiple_rooms_accepts_peers_from_any_of_them ... ok
[INFO] [stdout] test core::node::tests::node_rejects_peer_whose_room_is_not_in_set ... ok
[INFO] [stdout] test core::room::tests::room_app_id_differs_per_code ... ok
[INFO] [stdout] test core::room::tests::manager_join_and_is_joined ... ok
[INFO] [stdout] test core::room::tests::manager_leave_returns_state ... ok
[INFO] [stdout] test core::room::tests::manager_list_returns_all_rooms ... ok
[INFO] [stdout] test core::room::tests::room_app_id_differs_per_uuid ... ok
[INFO] [stdout] test core::room::tests::manager_peers_on_missing_room_empty ... ok
[INFO] [stdout] test core::room::tests::manager_add_peer_on_missing_room_is_noop ... ok
[INFO] [stdout] test core::room::tests::room_app_id_is_deterministic ... ok
[INFO] [stdout] test core::room::tests::room_hash_differs_per_code ... ok
[INFO] [stdout] test core::room::tests::room_hash_is_eight_bytes ... ok
[INFO] [stdout] test core::node::tests::reader_eof_cleans_up_connection_and_peer_manager ... ok
[INFO] [stdout] test core::scanner::tests::discover_once_dedupes_across_calls ... ok
[INFO] [stdout] test core::room::tests::room_app_id_is_32_hex_chars ... ok
[INFO] [stdout] test core::scanner::tests::discover_once_filters_self ... ok
[INFO] [stdout] test core::node::tests::role_for_is_deterministic ... ok
[INFO] [stdout] test core::room::tests::room_hash_is_deterministic ... ok
[INFO] [stdout] test core::scanner::tests::no_room_hashes_means_no_filter ... ok
[INFO] [stdout] test core::scanner::tests::empty_metadata_passes_under_room_filter ... ok
[INFO] [stdout] test core::scanner::tests::room_hash_filter_keeps_matching_peers ... ok
[INFO] [stdout] test core::scanner::tests::discover_once_returns_new_peers ... ok
[INFO] [stdout] test core::scanner::tests::set_room_hashes_stores_hashes ... ok
[INFO] [stdout] test core::security::tests::decrypt_wrong_key_fails ... ok
[INFO] [stdout] test core::scanner::tests::with_interval_sets_custom_interval ... ok
[INFO] [stdout] test core::scanner::tests::unsee_allows_peer_to_resurface ... ok
[INFO] [stdout] test core::scanner::tests::room_hash_filter_matches_any_of_multiple ... ok
[INFO] [stdout] test core::scanner::tests::reset_clears_seen ... ok
[INFO] [stdout] test core::security::tests::derive_aes_key_is_32_bytes_and_stable ... ok
[INFO] [stdout] test core::security::tests::different_secrets_give_different_keys ... ok
[INFO] [stdout] test core::security::tests::encrypt_decrypt_round_trip ... ok
[INFO] [stdout] test core::security::tests::decrypt_wrong_seq_fails ... ok
[INFO] [stdout] test core::security::tests::trust_store_add_and_query ... ok
[INFO] [stdout] test core::security::tests::trust_store_add_updates_existing ... ok
[INFO] [stdout] test core::security::tests::trust_store_persists_across_instances ... ok
[INFO] [stdout] test core::security::tests::trust_store_creates_parent_dir ... ok
[INFO] [stdout] test core::security::tests::verification_code_handles_short_secret ... ok
[INFO] [stdout] test core::security::tests::trust_store_new_on_missing_file ... ok
[INFO] [stdout] test core::security::tests::verification_code_is_six_digits ... ok
[INFO] [stdout] test core::security::tests::verification_code_same_secret_same_code ... ok
[INFO] [stdout] test core::session::io::tests::process_ack_clears_unacked ... ok
[INFO] [stdout] test core::session::io::tests::flush_unacked_replays_over_new_link ... ok
[INFO] [stdout] test core::security::tests::trust_store_remove ... ok
[INFO] [stdout] test core::session::io::tests::send_failover_to_standby ... ok
[INFO] [stdout] test core::session::io::tests::send_single_link_records_unacked ... ok
[INFO] [stdout] test core::session::io::tests::send_no_links_returns_no_healthy ... ok
[INFO] [stdout] test core::session::io::tests::should_switchback_requires_hysteresis ... ok
[INFO] [stdout] test core::session::manager::tests::rejects_capacity_when_preloaded_to_max ... ok
[INFO] [stdout] test core::session::reader::tests::ack_should_flush_false_when_empty ... ok
[INFO] [stdout] test core::session::reader::tests::ack_should_flush_honors_count_threshold ... ok
[INFO] [stdout] test core::session::reader::tests::link_recv_error_triggers_linkremoved_event_and_fails ... ok
[INFO] [stdout] test core::session::reader::tests::multi_link_reads_from_faster_source ... ok
[INFO] [stdout] test core::session::reader::tests::no_links_returns_no_healthy_link ... ok
[INFO] [stdout] test core::session::reader::tests::on_ack_clears_unacked_ring ... ok
[INFO] [stdout] test core::session::reader::tests::recv_drops_duplicate_seq ... ok
[INFO] [stdout] test core::session::types::tests::constants_match_contract ... ok
[INFO] [stdout] test core::session::reader::tests::recv_returns_message_and_decodes_session_seq ... ok
[INFO] [stdout] test core::session::types::tests::scheduler_state_default_is_empty ... ok
[INFO] [stdout] test core::session::types::tests::session_event_is_clone ... ok
[INFO] [stdout] test protocol::ack::tests::ack_cum_on_empty_noop ... ok
[INFO] [stdout] test protocol::ack::tests::ack_cum_releases_prefix ... ok
[INFO] [stdout] test protocol::ack::tests::decode_rejects_short_buffer ... ok
[INFO] [stdout] test protocol::ack::tests::empty_ring_operations ... ok
[INFO] [stdout] test protocol::ack::tests::encode_decode_roundtrip ... ok
[INFO] [stdout] test protocol::ack::tests::push_until_full_evicts_oldest ... ok
[INFO] [stdout] test core::security::tests::ecdh_both_sides_agree ... ok
[INFO] [stdout] test protocol::ack::tests::sack_out_of_window_ignored ... ok
[INFO] [stdout] test protocol::ack::tests::sack_selective_clear ... ok
[INFO] [stdout] test protocol::ack::tests::unacked_since_filters_by_seq ... ok
[INFO] [stdout] test protocol::ack::tests::wrap_around_seq_space ... ok
[INFO] [stdout] test core::scanner::tests::discover_loop_consumes_unsee_channel ... ok
[INFO] [stdout] test core::scanner::tests::discover_loop_yields_peers_and_respects_channel_close ... ok
[INFO] [stdout] test core::security::tests::encrypt_rejects_bad_key_len ... ok
[INFO] [stdout] test protocol::ack::tests::sack_zero_bitmap_noop ... ok
[INFO] [stdout] test core::security::tests::keypair_has_32_byte_public ... ok
[INFO] [stdout] test protocol::codec::tests::decode_invalid_returns_codec_error ... ok
[INFO] [stdout] test protocol::codec::tests::encode_uses_named_fields ... ok
[INFO] [stdout] test core::session::reader::tests::ack_flushes_after_eight_accepts ... ok
[INFO] [stdout] test protocol::codec::tests::roundtrip_preserves_value ... ok
[INFO] [stdout] test protocol::compress::tests::should_compress_threshold ... ok
[INFO] [stdout] test protocol::compress::tests::decompress_bad_input ... ok
[INFO] [stdout] test protocol::compress::tests::compress_small_input ... ok
[INFO] [stdout] test protocol::errors::tests::backpressure_display ... ok
[INFO] [stdout] test protocol::errors::tests::no_healthy_link_display ... ok
[INFO] [stdout] test protocol::errors::tests::payload_too_large_display ... ok
[INFO] [stdout] test protocol::compress::tests::compress_decompress_roundtrip ... ok
[INFO] [stdout] test protocol::compress::tests::stream_roundtrip_single_chunk ... ok
[INFO] [stdout] test protocol::errors::tests::peer_gone_display ... ok
[INFO] [stdout] test protocol::compress::tests::stream_finish_returns_tail ... ok
[INFO] [stdout] test protocol::errors::tests::room_mismatch_display ... ok
[INFO] [stdout] test protocol::frame::tests::decode_ignores_trailing_bytes ... ok
[INFO] [stdout] test protocol::errors::tests::stream_failed_display ... ok
[INFO] [stdout] test protocol::errors::tests::timeout_display ... ok
[INFO] [stdout] test protocol::errors::tests::unknown_method_display ... ok
[INFO] [stdout] test protocol::frame::tests::decode_rejects_bad_magic ... ok
[INFO] [stdout] test protocol::frame::tests::decode_rejects_bad_version ... ok
[INFO] [stdout] test protocol::frame::tests::decode_rejects_too_short ... ok
[INFO] [stdout] test protocol::frame::tests::decode_rejects_truncated_payload ... ok
[INFO] [stdout] test protocol::frame::tests::encode_decode_round_trip ... ok
[INFO] [stdout] test protocol::frame::tests::encode_empty_payload ... ok
[INFO] [stdout] test protocol::frame::tests::encode_layout_is_big_endian ... ok
[INFO] [stdout] test protocol::seq::tests::dedup_boundary_seq_u32_max ... ok
[INFO] [stdout] test protocol::seq::tests::dedup_boundary_seq_zero ... ok
[INFO] [stdout] test protocol::seq::tests::dedup_duplicate_detection ... ok
[INFO] [stdout] test protocol::seq::tests::dedup_first_observation_accept ... ok
[INFO] [stdout] test protocol::seq::tests::dedup_forward_seqs_accept ... ok
[INFO] [stdout] test protocol::seq::tests::dedup_jump_127_forward_keeps_last ... ok
[INFO] [stdout] test protocol::seq::tests::dedup_out_of_order_within_window_accept_once ... ok
[INFO] [stdout] test protocol::seq::tests::dedup_jump_exactly_128_forward ... ok
[INFO] [stdout] test protocol::seq::tests::dedup_very_far_back_is_stale_not_duplicate ... ok
[INFO] [stdout] test protocol::seq::tests::dedup_window_slide_evicts_old ... ok
[INFO] [stdout] test protocol::seq::tests::dedup_wrap_around_forward ... ok
[INFO] [stdout] test protocol::seq::tests::seqgen_monotonic ... ok
[INFO] [stdout] test protocol::seq::tests::snapshot_reflects_last_and_bits ... ok
[INFO] [stdout] test protocol::seq::tests::snapshot_empty_window ... ok
[INFO] [stdout] test protocol::types::tests::ctrl_command_serde ... ok
[INFO] [stdout] test protocol::types::tests::error_code_round_trip ... ok
[INFO] [stdout] test protocol::seq::tests::seqgen_wrap ... ok
[INFO] [stdout] test protocol::types::tests::constants_are_correct ... ok
[INFO] [stdout] test protocol::types::tests::flags_bit_layout ... ok
[INFO] [stdout] test protocol::types::tests::frame_serde ... ok
[INFO] [stdout] test protocol::types::tests::flags_round_trip_all_combinations ... ok
[INFO] [stdout] test protocol::types::tests::handshake_serde_backwards_compat_no_session_fields ... ok
[INFO] [stdout] test protocol::types::tests::handshake_serde ... ok
[INFO] [stdout] test protocol::types::tests::handshake_serde_backwards_compat_no_room_hash ... ok
[INFO] [stdout] test protocol::types::tests::handshake_serde_partial_session_fields ... ok
[INFO] [stdout] test protocol::types::tests::message_type_round_trip ... ok
[INFO] [stdout] test transport::ble::tests::characteristic_uuids_are_distinct ... ok
[INFO] [stdout] test protocol::types::tests::priority_mapping ... ok
[INFO] [stdout] test transport::ble::tests::encode_is_deterministic_same_input_same_uuid ... ok
[INFO] [stdout] test transport::ble::tests::identity_uuid_decode_rejects_non_marker_uuid ... ok
[INFO] [stdout] test protocol::types::tests::stream_info_serde ... ok
[INFO] [stdout] test transport::ble::tests::identity_uuid_encode_decode_roundtrip ... ok
[INFO] [stdout] test transport::ble::tests::identity_uuid_encode_rejects_invalid_app_uuid ... ok
[INFO] [stdout] test transport::ble::tests::parse_room_hash_returns_none_for_short_suffix ... ok
[INFO] [stdout] test transport::ble::tests::parse_room_hash_returns_none_without_suffix ... ok
[INFO] [stdout] test transport::ble::tests::parse_room_hash_roundtrips_valid_suffix ... ok
[INFO] [stdout] test transport::ble::tests::parse_room_hash_returns_none_for_non_hex_suffix ... ok
[INFO] [stdout] test transport::ble::tests::room_hash_round_trips ... ok
[INFO] [stdout] test transport::ble::tests::parse_room_hash_uses_last_hash ... ok
[INFO] [stdout] test transport::ble::tests::set_local_name_updates_field ... ok
[INFO] [stdout] test transport::ble::tests::service_uuid_value ... ok
[INFO] [stdout] test transport::ble::tests::listen_returns_error_with_explanation ... ok
[INFO] [stdout] test transport::ble::tests::set_negotiated_mtu_updates_reported_mtu ... ok
[INFO] [stdout] test transport::ble::tests::should_dial_as_central_orders_by_uuid_bytes ... ok
[INFO] [stdout] test transport::ble::tests::should_dial_as_central_returns_none_for_invalid_local ... ok
[INFO] [stdout] test transport::ipc::tests::default_uses_tmp_path ... ok
[INFO] [stdout] test transport::ble::tests::should_dial_as_central_returns_none_on_tie ... ok
[INFO] [stdout] test transport::ble::tests::transport_metadata ... ok
[INFO] [stdout] test transport::ipc::tests::transport_metadata ... ok
[INFO] [stdout] test transport::ipc::tests::discover_missing_socket_returns_empty ... ok
[INFO] [stdout] test protocol::errors::tests::result_alias_works ... ok
[INFO] [stdout] test protocol::types::tests::message_type_rejects_unknown ... ok
[INFO] [stdout] test transport::mock::tests::close_ends_peer_read ... ok
[INFO] [stdout] test transport::ipc::tests::discover_existing_socket_returns_peer ... ok
[INFO] [stdout] test transport::mock::tests::discover_returns_empty ... ok
[INFO] [stdout] test transport::mock::tests::peer_ids_distinct ... ok
[INFO] [stdout] test transport::mock::tests::transport_metadata ... ok
[INFO] [stdout] test transport::mock::tests::mock_pair_roundtrip ... ok
[INFO] [stdout] test transport::mock::tests::write_after_close_fails ... ok
[INFO] [stdout] test transport::tcp::tests::hex_decode_rejects_all_bad_lengths ... ok
[INFO] [stdout] test transport::tcp::tests::hex_decode_rejects_bad_length ... ok
[INFO] [stdout] test transport::tcp::tests::hex_decode_rejects_non_hex ... ok
[INFO] [stdout] test transport::tcp::tests::hex_decode_rejects_non_hex_variants ... ok
[INFO] [stdout] test transport::tcp::tests::empty_payload_roundtrip ... ok
[INFO] [stdout] test core::node::tests::send_raw_not_blocked_by_parked_reader ... ok
[INFO] [stdout] test transport::tcp::tests::hex_roundtrip ... ok
[INFO] [stdout] test transport::tcp::tests::local_hostname_default_when_all_unset ... ok
[INFO] [stdout] test transport::tcp::tests::local_hostname_falls_back_to_computername_env ... ok
[INFO] [stdout] test transport::tcp::tests::local_hostname_falls_back_to_host_env ... ok
[INFO] [stdout] test core::node::tests::send_raw_on_missing_peer_fails ... ok
[INFO] [stdout] test transport::tcp::tests::hex_encode_lowercase_16_chars ... ok
[INFO] [stdout] test transport::tcp::tests::room_hash_round_trips ... ok
[INFO] [stdout] test transport::tcp::tests::sanitize_instance_variants ... ok
[INFO] [stdout] test core::node::tests::start_rejects_double_start ... ok
[INFO] [stdout] test core::node::tests::start_transitions_to_discovering ... ok
[INFO] [stdout] test core::node::tests::spawn_peer_reader_emits_message_received_event ... ok
[INFO] [stdout] test core::node::tests::stop_returns_to_idle ... ok
[INFO] [stdout] test transport::tcp::tests::sanitize_replaces_non_alnum ... ok
[INFO] [stdout] test transport::tcp::tests::set_app_uuid_updates_field ... ok
[INFO] [stdout] test transport::tcp::tests::with_port_updates_port_without_binding ... ok
[INFO] [stdout] test transport::tcp::tests::tcp_connection_new_sets_peer_id ... ok
[INFO] [stdout] test transport::tcp::tests::transport_metadata ... ok
[INFO] [stdout] test transport::tcp::tests::read_after_close_errors ... ok
[INFO] [stdout] test transport::tcp::tests::loopback_connect_roundtrip ... ok
[INFO] [stdout] test transport::tcp::tests::local_hostname_prefers_hostname_env ... ok
[INFO] [stdout] test protocol::errors::tests::io_from_conversion ... ok
[INFO] [stdout] test transport::tcp::tests::set_local_name_updates_field ... ok
[INFO] [stdout] test core::session::reader::tests::ack_flushes_after_delay_ms ... ok
[INFO] [stdout] test transport::ipc::tests::write_after_close_fails ... ok
[INFO] [stdout] test transport::ipc::tests::empty_payload_roundtrip ... ok
[INFO] [stdout] test transport::tcp::tests::with_discover_duration_bounds_browse_window ... ok
[INFO] [stdout] test transport::ipc::tests::listen_and_connect_roundtrip ... ok
[INFO] [stdout] test transport::tcp::tests::discover_connect_roundtrip ... ok
[INFO] [stdout] test transport::tcp::tests::discover_drops_loopback_only_peer ... ok
[INFO] [stdout] test transport::tcp::tests::discover_filters_own_uuid ... ok
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 267 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 2.35s
[INFO] [stdout] 
[INFO] [stderr]      Running tests/link_tests.rs (/opt/rustwide/target/debug/deps/link_tests-896cae4910f8d7fa)
[INFO] [stdout] 
[INFO] [stdout] running 9 tests
[INFO] [stdout] test transport_kind_wire_roundtrip ... ok
[INFO] [stdout] test is_healthy_falls_after_sustained_errors ... ok
[INFO] [stdout] test record_rtt_updates_ema_and_last_ok ... ok
[INFO] [stdout] test initial_state_is_healthy ... ok
[INFO] [stdout] test record_success_recovers_health ... ok
[INFO] [stdout] test score_rewards_throughput_penalises_rtt_and_errors ... ok
[INFO] [stdout] test inflight_counters_are_saturating ... ok
[INFO] [stdout] test send_after_close_records_error ... ok
[INFO] [stdout] test send_and_recv_keep_link_healthy ... ok
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 9 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
[INFO] [stdout] 
[INFO] [stderr]      Running tests/phase1_tests.rs (/opt/rustwide/target/debug/deps/phase1_tests-78cad86c7c1c256f)
[INFO] [stdout] 
[INFO] [stdout] running 17 tests
[INFO] [stdout] test test_encode_decode_string ... ok
[INFO] [stdout] test test_encode_decode_struct ... ok
[INFO] [stdout] test test_error_display ... ok
[INFO] [stdout] test test_flags_bit_layout ... ok
[INFO] [stdout] test test_compress_decompress ... ok
[INFO] [stdout] test test_empty_data ... ok
[INFO] [stdout] test test_flags_encode_decode ... ok
[INFO] [stdout] test test_invalid_message_type ... ok
[INFO] [stdout] test test_message_type_roundtrip ... ok
[INFO] [stdout] test test_priority_mapping ... ok
[INFO] [stdout] test test_should_compress_threshold ... ok
[INFO] [stdout] test test_stream_compressor ... ok
[INFO] [stdout] test test_io_error_from ... ok
[INFO] [stdout] test test_compress_ratio ... ok
[INFO] [stdout] test test_decode_invalid_data ... ok
[INFO] [stdout] test test_result_alias ... ok
[INFO] [stdout] test test_encode_large_data ... ok
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 17 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.50s
[INFO] [stdout] 
[INFO] [stderr]      Running tests/phase2_tests.rs (/opt/rustwide/target/debug/deps/phase2_tests-ce4e4a3df6900b35)
[INFO] [stdout] 
[INFO] [stdout] running 11 tests
[INFO] [stdout] test test_generate_app_uuid ... ok
[INFO] [stdout] test test_frame_empty_payload ... ok
[INFO] [stdout] test test_frame_invalid_magic ... ok
[INFO] [stdout] test test_frame_with_flags ... ok
[INFO] [stdout] test test_frame_invalid_version ... ok
[INFO] [stdout] test test_mock_connection_compiles ... ok
[INFO] [stdout] test test_peer_manager_add_get ... ok
[INFO] [stdout] test test_mock_transport_compiles ... ok
[INFO] [stdout] test test_peer_manager_list ... ok
[INFO] [stdout] test test_peer_manager_remove ... ok
[INFO] [stdout] test test_frame_encode_decode_roundtrip ... ok
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 11 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.01s
[INFO] [stdout] 
[INFO] [stderr]      Running tests/phase3_tests.rs (/opt/rustwide/target/debug/deps/phase3_tests-fefe25b3574dca7a)
[INFO] [stdout] 
[INFO] [stdout] running 9 tests
[INFO] [stdout] test test_ble_service_uuids ... ok
[INFO] [stdout] test test_ble_transport_new ... ok
[INFO] [stdout] test test_ble_capabilities ... ok
[INFO] [stdout] test test_mock_capabilities ... ok
[INFO] [stdout] test test_mock_pair_bidirectional ... ok
[INFO] [stdout] test test_mock_pair_large_message ... ok
[INFO] [stdout] test test_ipc_large_message ... ok
[INFO] [stdout] test test_ipc_listen_connect ... ok
[INFO] [stdout] test test_ipc_multiple_messages ... ok
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 9 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.06s
[INFO] [stdout] 
[INFO] [stderr]      Running tests/phase4_tests.rs (/opt/rustwide/target/debug/deps/phase4_tests-fbf81b7f3a294278)
[INFO] [stdout] 
[INFO] [stdout] running 16 tests
[INFO] [stdout] test test_negotiate_role_equal ... ok
[INFO] [stdout] test test_negotiate_role_peripheral ... ok
[INFO] [stdout] test test_verification_code ... ok
[INFO] [stdout] test test_decrypt_wrong_key ... ok
[INFO] [stdout] test test_decrypt_wrong_seq ... ok
[INFO] [stdout] test test_encrypt_decrypt_roundtrip ... ok
[INFO] [stdout] test test_trust_store_persistence ... ok
[INFO] [stdout] test test_trust_store_crud ... ok
[INFO] [stdout] test test_ecdh_shared_secret ... ok
[INFO] [stdout] test test_discover_once ... ok
[INFO] [stdout] test test_discover_dedup ... ok
[INFO] [stdout] test test_scanner_reset ... ok
[INFO] [stdout] test test_negotiate_role_central ... ok
[INFO] [stdout] test test_perform_handshake_rejects_wrong_message_type ... ok
[INFO] [stdout] test test_perform_handshake ... ok
[INFO] [stdout] test test_connection_manager_crud ... ok
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 16 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.01s
[INFO] [stdout] 
[INFO] [stderr]      Running tests/phase5_tests.rs (/opt/rustwide/target/debug/deps/phase5_tests-6e664e89cc882482)
[INFO] [stdout] 
[INFO] [stdout] running 12 tests
[INFO] [stdout] test test_background_gives_up ... ignored, requires 35+ minutes of wall-clock time
[INFO] [stdout] test test_foreground_to_background ... ignored, requires 5+ minutes of wall-clock time
[INFO] [stdout] test test_reset ... ok
[INFO] [stdout] test test_exponential_backoff ... ok
[INFO] [stdout] test test_backoff_cap_60s ... ok
[INFO] [stdout] test test_stream_progress ... ok
[INFO] [stdout] test test_node_state_transitions ... ok
[INFO] [stdout] test test_node_initial_state ... ok
[INFO] [stdout] test test_node_config ... ok
[INFO] [stdout] test test_node_stop ... ok
[INFO] [stdout] test test_node_start_discovering ... ok
[INFO] [stdout] test test_send_raw_missing_peer ... ok
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 10 passed; 0 failed; 2 ignored; 0 measured; 0 filtered out; finished in 0.01s
[INFO] [stdout] 
[INFO] [stderr]      Running tests/phase6_tests.rs (/opt/rustwide/target/debug/deps/phase6_tests-b73c9fc05fc4ac44)
[INFO] [stdout] 
[INFO] [stdout] running 12 tests
[INFO] [stdout] test test_stream_id_allocation ... ok
[INFO] [stdout] test test_pubsub_subscribe_unsubscribe ... ok
[INFO] [stdout] test test_pubsub_remove_peer ... ok
[INFO] [stdout] test test_rpc_unknown_method ... ok
[INFO] [stdout] test test_stream_progress ... ok
[INFO] [stdout] test test_rpc_pending_requests_integration ... ok
[INFO] [stdout] test test_send_message ... ok
[INFO] [stdout] test test_broadcast ... ok
[INFO] [stdout] test test_rpc_register_and_handle ... ok
[INFO] [stdout] test test_pubsub_message_serde ... ok
[INFO] [stdout] test test_stream_write_read ... ok
[INFO] [stdout] test test_rpc_request_response_payload ... ok
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 12 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.01s
[INFO] [stdout] 
[INFO] [stderr]      Running tests/phase8_tests.rs (/opt/rustwide/target/debug/deps/phase8_tests-a26ca3ebbc27b612)
[INFO] [stdout] 
[INFO] [stdout] running 11 tests
[INFO] [stdout] test test_ble_peripheral_exists ... ok
[INFO] [stdout] test test_room_manager_peers ... ok
[INFO] [stdout] test test_room_app_id_isolation ... ok
[INFO] [stdout] test test_generate_room_code_format ... ok
[INFO] [stdout] test test_room_hash_consistency ... ok
[INFO] [stdout] test test_room_hash_different_codes ... ok
[INFO] [stdout] test test_room_manager_join_leave ... ok
[INFO] [stdout] test test_generate_room_code_unique ... ok
[INFO] [stdout] test test_scanner_no_filter_when_empty ... ok
[INFO] [stdout] test test_scanner_room_filter ... ok
[INFO] [stdout] test test_room_manager_active_hashes ... ok
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 11 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.04s
[INFO] [stdout] 
[INFO] [stderr]      Running tests/phase9_tests.rs (/opt/rustwide/target/debug/deps/phase9_tests-9f01bc644e635fef)
[INFO] [stdout] 
[INFO] [stdout] running 22 tests
[INFO] [stdout] test test_e2e_message_roundtrip ... ok
[INFO] [stdout] test test_e2e_rpc_unknown_method_errors ... ok
[INFO] [stdout] test test_e2e_bidirectional ... ok
[INFO] [stdout] test test_e2e_large_payload_roundtrip ... ok
[INFO] [stdout] test test_handshake_codec_roundtrip ... ok
[INFO] [stdout] test test_e2e_handshake_then_messages ... ok
[INFO] [stdout] test test_e2e_rpc ... ok
[INFO] [stdout] test test_e2e_handshake ... ok
[INFO] [stdout] test test_peripheral_module_exists ... ok
[INFO] [stdout] test test_e2e_handshake_rejects_wrong_message_type ... ok
[INFO] [stdout] test test_room_distinct_managers_do_not_share_state ... ok
[INFO] [stdout] test test_room_isolation ... ok
[INFO] [stdout] test test_node_disconnect_removes_connection ... ok
[INFO] [stdout] test test_node_attach_and_send_raw ... ok
[INFO] [stdout] test test_node_send_raw_missing_peer ... ok
[INFO] [stdout] test test_node_encrypted_send_recv ... ok
[INFO] [stdout] test test_node_bidirectional_attached ... ok
[INFO] [stdout] test test_node_rpc_end_to_end_attached ... ok
[INFO] [stdout] test test_node_heartbeat_roundtrip ... ok
[INFO] [stderr]      Running tests/session_manager_tests.rs (/opt/rustwide/target/debug/deps/session_manager_tests-6b0d47e98acd2f15)
[INFO] [stdout] test test_node_recv_raw_over_mock ... ok
[INFO] [stdout] test test_room_join_creates_state ... ok
[INFO] [stdout] test test_node_isolated_pairs ... ok
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 22 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.13s
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] running 12 tests
[INFO] [stdout] test attach_second_link_with_matching_session_id ... ok
[INFO] [stdout] test peers_and_list_status_snapshot ... ok
[INFO] [stdout] test attach_rejects_duplicate_transport_kind ... ok
[INFO] [stdout] test detach_active_link_downgrades_role_of_remaining ... ok
[INFO] [stdout] test detach_link_removes_link_and_drops_empty_peer ... ok
[INFO] [stdout] test attach_first_link_rejects_foreign_session_id ... ok
[INFO] [stdout] test detach_unknown_link_returns_false ... ok
[INFO] [stdout] test count_reflects_create_and_drop ... ok
[INFO] [stdout] test drop_peer_removes_session ... ok
[INFO] [stdout] test attach_rejects_wrong_session_id_hint ... ok
[INFO] [stdout] test attach_accepts_up_to_max_distinct_kinds ... ok
[INFO] [stderr]      Running tests/tcp_tests.rs (/opt/rustwide/target/debug/deps/tcp_tests-e758e90020e4045c)
[INFO] [stdout] test attach_first_link_creates_new_session ... ok
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 12 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.01s
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] running 10 tests
[INFO] [stdout] test connect_returns_error_when_no_listener ... ok
[INFO] [stdout] test length_prefix_truncated_returns_io_eof ... ok
[INFO] [stdout] test peer_drop_triggers_write_broken_pipe ... ok
[INFO] [stdout] test payload_truncated_returns_io_eof ... ok
[INFO] [stdout] test peer_drop_triggers_read_eof ... ok
[INFO] [stdout] test connect_rejects_invalid_peer_id ... ok
[INFO] [stdout] test mtu_upper_bound_65536_round_trip ... ok
[INFO] [stdout] test large_payload_round_trip_2mib ... ok
[INFO] [stdout] test hundred_frames_in_order_no_merge ... ok
[INFO] [stdout] test discover_parses_room_hash_from_txt ... ok
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 10 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 2.31s
[INFO] [stdout] 
[INFO] [stderr]      Running unittests src/lib.rs (/opt/rustwide/target/debug/deps/mlink_daemon-f5f60fea44c25c2e)
[INFO] [stdout] 
[INFO] [stdout] running 37 tests
[INFO] [stdout] test lifecycle::tests::stale_pid_is_ignored ... ok
[INFO] [stdout] test discovery::tests::wire_from_str_covers_both_kinds ... ok
[INFO] [stdout] test lifecycle::tests::missing_file_is_ok ... ok
[INFO] [stdout] test protocol::tests::envelope_parses_with_optional_id ... ok
[INFO] [stdout] test protocol::tests::envelope_parses_with_id ... ok
[INFO] [stdout] test lifecycle::tests::corrupt_file_is_ok ... ok
[INFO] [stdout] test protocol::tests::envelope_rejects_missing_type ... ok
[INFO] [stdout] test protocol::tests::encode_frame_shape ... ok
[INFO] [stdout] test queue::tests::drain_clears_queue ... ok
[INFO] [stdout] test lifecycle::tests::stale_pid_removes_daemon_info ... ok
[INFO] [stdout] test protocol::tests::room_payload_requires_room ... ok
[INFO] [stdout] test protocol::tests::send_payload_to_is_optional ... ok
[INFO] [stdout] test queue::tests::drain_unknown_room_is_empty ... ok
[INFO] [stdout] test queue::tests::remove_room_drops_bucket ... ok
[INFO] [stdout] test queue::tests::push_and_drain_preserves_order ... ok
[INFO] [stdout] test queue::tests::remove_then_push_starts_fresh ... ok
[INFO] [stdout] test session::transport_debug::tests::disconnect_payload_requires_both_fields ... ok
[INFO] [stdout] test protocol::tests::encode_frame_with_id ... ok
[INFO] [stdout] test rooms::tests::corrupt_file_yields_empty_store ... ok
[INFO] [stdout] test queue::tests::rooms_are_isolated ... ok
[INFO] [stdout] test session::transport_debug::tests::switch_payload_round_trips ... ok
[INFO] [stdout] test rooms::tests::empty_array_loads_empty ... ok
[INFO] [stdout] test rooms::tests::add_persists_and_reload_sees_it ... ok
[INFO] [stdout] test rooms::tests::missing_file_loads_empty ... ok
[INFO] [stdout] test session::transport_toggle::tests::parse_kind_accepts_both ... ok
[INFO] [stdout] test session::transport_debug::tests::transport_kind_from_wire_covers_protocol_set ... ok
[INFO] [stdout] test session::transport_toggle::tests::parse_kind_rejects_unknown ... ok
[INFO] [stdout] test lifecycle::tests::daemon_info_roundtrip ... ok
[INFO] [stdout] test session::validate::tests::valid_room_code_accepts_six_digits ... ok
[INFO] [stdout] test rooms::tests::save_writes_sorted_json_array ... ok
[INFO] [stdout] test session::transport_list::tests::wire_from_label_defaults_to_tcp ... ok
[INFO] [stdout] test queue::tests::push_far_over_limit_stays_bounded ... ok
[INFO] [stdout] test queue::tests::push_over_limit_drops_oldest ... ok
[INFO] [stdout] test queue::tests::push_under_limit_keeps_all ... ok
[INFO] [stdout] test session::validate::tests::valid_room_code_rejects_length_and_non_digit ... ok
[INFO] [stdout] test lifecycle::tests::live_pid_preserves_daemon_info ... ok
[INFO] [stderr]      Running unittests src/main.rs (/opt/rustwide/target/debug/deps/mlink_daemon-2f3f8e9736593cd9)
[INFO] [stdout] test rooms::tests::remove_persists ... ok
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 37 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.06s
[INFO] [stdout] 
[INFO] [stderr]      Running tests/rooms_persist.rs (/opt/rustwide/target/debug/deps/rooms_persist-3660446a3705bb97)
[INFO] [stdout] 
[INFO] [stdout] running 0 tests
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] running 1 test
[INFO] [stdout] test startup_auto_joins_persisted_rooms_and_missing_file_is_empty ... ok
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.02s
[INFO] [stdout] 
[INFO] [stderr]      Running tests/ws_protocol.rs (/opt/rustwide/target/debug/deps/ws_protocol-a24e0652899ac93c)
[INFO] [stdout] 
[INFO] [stdout] running 22 tests
[INFO] [stdout] test peer_disconnected_event_pushes_updated_room_state ... ok
[INFO] [stdout] test peer_connected_event_pushes_room_state_with_peers ... ok
[INFO] [stdout] test disconnect_keeps_daemon_room_joined ... ok
[INFO] [stdout] test multi_client_each_has_own_rooms ... ok
[INFO] [stdout] test join_drains_backlog_from_queue ... ok
[INFO] [stdout] test oversize_frame_returns_payload_too_large ... ok
[INFO] [stdout] test explicit_leave_without_other_subscribers_retires_room ... ok
[INFO] [stdout] test bad_json_returns_bad_json_error ... ok
[INFO] [stdout] test join_acks_and_returns_room_state ... ok
[INFO] [stdout] test ping_without_id_returns_pong ... ok
[INFO] [stdout] test ping_with_id_echoes_id_in_pong ... ok
[INFO] [stdout] test leave_emits_ack_and_room_state_joined_false ... ok
[INFO] [stdout] test join_rejects_bad_room_code ... ok
[INFO] [stdout] test hello_echoes_ready_and_acks_when_id_present ... ok
[INFO] [stdout] test join_returns_connected_peers_in_room_state ... ok
[INFO] [stdout] test hello_with_non_object_payload_returns_bad_payload ... ok
[INFO] [stdout] test send_before_join_returns_not_joined_error ... ok
[INFO] [stdout] test send_broadcasts_to_all_peers_and_acks_sender ... ok
[INFO] [stdout] test send_to_empty_room_returns_send_failed ... ok
[INFO] [stdout] test send_to_specific_peer_unicasts_only_to_target ... ok
[INFO] [stdout] test unknown_type_returns_bad_type_error ... ok
[INFO] [stdout] test wrong_version_returns_bad_version_error ... ok
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 22 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 6.18s
[INFO] [stdout] 
[INFO] [stderr]      Running tests/ws_ready.rs (/opt/rustwide/target/debug/deps/ws_ready-ddb047eaca98b5a7)
[INFO] [stdout] 
[INFO] [stdout] running 1 test
[INFO] [stdout] test ws_sends_ready_frame_on_connect ... ok
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 3.03s
[INFO] [stdout] 
[INFO] [stderr]      Running tests/ws_transport_debug.rs (/opt/rustwide/target/debug/deps/ws_transport_debug-0a6fa50facc4c670)
[INFO] [stdout] 
[INFO] [stdout] running 9 tests
[INFO] [stdout] test enable_transport_rejects_unknown_kind ... ok
[INFO] [stdout] test transport_switch_fails_for_unknown_peer ... ok
[INFO] [stdout] test unknown_wire_still_gets_bad_type_via_dispatch ... ok
[INFO] [stdout] test transport_switch_rejects_malformed_payload ... ok
[INFO] [stdout] test transport_list_returns_empty_snapshot_on_fresh_daemon ... ok
[INFO] [stdout] test disconnect_link_blocked_without_dev_flag ... ok
[INFO] [stdout] test transport_switch_rejects_unknown_kind ... ok
[INFO] [stdout] test transport_state_includes_enabled_flags ... ok
[INFO] [stdout] test disable_then_re_enable_transport_updates_state ... ok
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 9 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 3.10s
[INFO] [stdout] 
[INFO] [stderr]    Doc-tests mlink_cli
[INFO] [stdout] 
[INFO] [stdout] running 0 tests
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
[INFO] [stdout] 
[INFO] [stderr]    Doc-tests mlink_core
[INFO] [stdout] 
[INFO] [stdout] running 0 tests
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
[INFO] [stdout] 
[INFO] [stderr]    Doc-tests mlink_daemon
[INFO] [stdout] 
[INFO] [stdout] running 1 test
[INFO] [stdout] test crates/mlink-daemon/src/queue.rs - queue (line 15) ... ok
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.42s
[INFO] [stdout] 
[INFO] running `Command { std: "docker" "inspect" "ddb5876a986afdd6b0d1ebf10ba215fe9d3cfbda8ac368da216fdd27c035f605", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "ddb5876a986afdd6b0d1ebf10ba215fe9d3cfbda8ac368da216fdd27c035f605", kill_on_drop: false }`
[INFO] [stdout] ddb5876a986afdd6b0d1ebf10ba215fe9d3cfbda8ac368da216fdd27c035f605
